<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    var arr = [1, 2, 3];
    var obj = { a: 1, b: 2, c: 3 };

    console.log(arr.toString()); // '1,2,3'
    console.log(obj.toString()); // '[object Object]'

    // 能不能在保留数组和对象结构的情况下 将其转化为字符串
    var arr = [1, 2, 3];   // '[1, 2, 3]'
    var obj = { a: 1, b: 2, c: 3 };  // '{ "a": 1, "b": 2, "c": 3 }'

    /* // 模拟实现
    // 数组
    var str = arr.join(",");
    str = '[' + str + "]";
    console.log(str);
    
    // 数组结构的字符串转回来
    var brr = eval('[1,2,3]')
    console.log(str);

    // 对象
    var arr = []
    for(var key in obj){
        var val = obj[key];
        arr.push(`"${key}":${val}`);
    }
    console.log(arr);
    var str = arr.join(",");
    str = '{' + str + "}";
    console.log(str);

    // 对象结构的字符串转回来
    var data = eval('({"a":1,"b":2,"c":3})');
    console.log(data); */


    // 官方提供的JSON对象  
    console.log(JSON);
    // JSON.stringify()    在保留数组和对象结构的情况下 将其转化为字符串(JSON字符串)
    // JSON.parse()        将JSON字符串 解析为 对应的数组和对象

    var arr = [1, 2, 3, [4, 5, 6]];   // '[1, 2, 3]'
    var obj = { a: 1, b: 2, c: 3, e: { e1: 4, e2: 5 } };  // '{ "a": 1, "b": 2, "c": 3 }'

    var arrStr = JSON.stringify(arr);
    console.log(1, arrStr);

    var objStr = JSON.stringify(obj);
    console.log(1, objStr);

    var brr = JSON.parse(arrStr);
    console.log(brr);

    var o = JSON.parse(objStr);
    console.log(o);


    // 应用:JSON.parse()  JSON.stringify()  配合 实现数组/对象深复制






</script>

</html>